#include <stdio.h>

typedef struct _LED{
	unsigned char led0:1;
	unsigned char led1:1;
	unsigned char led2:1;
	unsigned char led3:1;
	unsigned char led4:1;
	unsigned char led5:1;
	unsigned char led6:1;
	unsigned char led7:1;
}led_t;

int main(int argc, const char *argv[])
{
	unsigned char LED_char;	
	led_t LED_struct;
	printf("%ld\n", sizeof(LED_char)); // 1
	printf("%ld\n", sizeof(LED_struct)); // 1
	
	// 将3号灯点亮
	LED_char |= 1<<3;
	LED_struct.led3 = 1;

	// 将5号灯熄灭
	LED_char &= ~(1<<5);
	LED_struct.led5 = 0;

	// 通过上面的对比 就知道 
	// 使用结构体位域操作bit位 比使用变量和位运算 方便易读
	
	// 注意：由于成员被压缩了 占用的bit少了 存储数据的范围也就变小了
	// 用的使用不要溢出	
	LED_struct.led2 = 2; // 压缩成1个bit了只能存0或者1 
	printf("%d\n", LED_struct.led2); // 0

	return 0;
}
